/**
 * 
 */
package net.danielpaz.puc.poo.frigorifico.view;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import net.danielpaz.puc.poo.frigorifico.controller.ProdutoController;
import net.danielpaz.puc.poo.frigorifico.model.ProdutoDAO;

class TelaProduto extends JFrame {
	JLabel label0, label1;
	JComboBox comboBox3, comboBox2;
	JButton btGravar, btAlterar, btExcluir, btNovo, btLocalizar, btCancelar,
			btSair;
	static JTextField tfId, tfDescricao;
	static JComboBox tfFornecedor, tfTipoProduto;
	private ProdutoController produtoController;

	/* Monta a tela */
	public static void main(String args[]) {
		JFrame janela = new TelaProduto();
		janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		janela.setVisible(true);
	}

	public TelaProduto() {
		inicializarComponentes();
		definirEventos();
	}
	/* Starta todos os componentes para montagem da tela*/
	public void inicializarComponentes() {
		setLayout(new FlowLayout(FlowLayout.LEFT));
		setTitle("Cadastramento de produtoController.getProdutos()");
		setBounds(200, 100, 610, 120);
		label0 = new JLabel("ID");
		label1 = new JLabel("Descricao");
		comboBox2 = new JComboBox();
		comboBox3 = new JComboBox();
		tfId = new JTextField(7);
		tfDescricao = new JTextField(20);
		tfTipoProduto = new JComboBox();
		tfFornecedor = new JComboBox();
		btGravar = new JButton(null, null);
		btGravar.setText("Gravar");
		btGravar.setToolTipText("Gravar");
		btAlterar = new JButton(null, null);
		btAlterar.setText("Alterar");
		btAlterar.setToolTipText("Alterar");
		btExcluir = new JButton(null, null);
		btExcluir.setText("Excluir");
		btExcluir.setToolTipText("Excluir");
		btLocalizar = new JButton(null, null);
		btLocalizar.setText("Localizar");
		btLocalizar.setToolTipText("Localizar");
		btNovo = new JButton(null, null);
		btNovo.setText("Novo");
		btNovo.setToolTipText("Novo");
		btCancelar = new JButton(null, null);
		btCancelar.setText("Cancelar");
		btCancelar.setToolTipText("Cancelar");
		btSair = new JButton(null, null);
		btSair.setText("Sair");
		btSair.setToolTipText("Sair");

		add(label0);
		add(tfId);
		add(label1);
		add(tfDescricao);
		add(comboBox2);
		add(tfTipoProduto);
		add(comboBox3);
		add(tfFornecedor);
		add(btNovo);
		add(btLocalizar);
		add(btGravar);
		add(btAlterar);
		add(btExcluir);
		add(btCancelar);
		add(btSair);
		setResizable(false);
		setBotoes(true, true, false, false, false, false);
		produtoController.setProdutos(new ProdutoDAO());
		if (!produtoController.getProdutos().bd.getConnection()) {
			JOptionPane.showMessageDialog(null,
					"Falha na conexao, o sistema sera fechado!");
			System.exit(0);
		}
	}

	public void definirEventos() {
		btSair.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				produtoController.getProdutos().bd.close();
				System.exit(0);
			}
		});
		btNovo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				limpaCampos();
				setBotoes(false, false, true, false, false, true);
			}
		});
		btCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				limpaCampos();
			}
		});
		btGravar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (tfDescricao.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"A Descricao do Produto n�o pode ser vazio!");
					tfDescricao.requestFocus();
					return;
				}
				if (comboBox2.getSelectedIndex() == 1) {
					produtoController.getProdutos().produto.getAve().setId(
							getNovoID());
					produtoController.getProdutos().produto.getAve()
							.setDescricao(tfDescricao.getText());
					// produtoController.getProdutos().produto.getAve().setFornecedor(tfFornecedor.getSelectedIndex());
					JOptionPane.showMessageDialog(null, produtoController
							.getProdutos().atualizar(ProdutoDAO.INCLUSAO, "Ave"));
				} else {
					produtoController.getProdutos().produto.getBovino().setId(
							getNovoID());
					produtoController.getProdutos().produto.getBovino()
							.setDescricao(tfDescricao.getText());
					// produtoController.getProdutos().produto.getBovino().setFornecedor(tfFornecedor.getSelectedIndex());
					JOptionPane.showMessageDialog(null, produtoController
							.getProdutos().atualizar(ProdutoDAO.INCLUSAO, "Bovino"));
				}
				limpaCampos();
			}
		});
		btAlterar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (comboBox2.getSelectedIndex() == 1) {
					produtoController.getProdutos().produto.getAve().setId(
							Integer.parseInt(tfId.getText()));
					produtoController.getProdutos().produto.getAve()
							.setDescricao(tfDescricao.getText());
					// produtoController.getProdutos().produto.getAve().setFornecedor(tfFornecedor.getSelectedIndex());
					JOptionPane.showMessageDialog(null, produtoController
							.getProdutos().atualizar(ProdutoDAO.ALTERACAO, "Ave"));
				} else {
					produtoController.getProdutos().produto.getBovino().setId(
							Integer.parseInt(tfId.getText()));
					produtoController.getProdutos().produto.getBovino()
							.setDescricao(tfDescricao.getText());
					// produtoController.getProdutos().produto.getBovino().setFornecedor(tfFornecedor.getSelectedIndex());
					JOptionPane.showMessageDialog(null, produtoController
							.getProdutos().atualizar(ProdutoDAO.ALTERACAO, "Bovino"));
				}
				limpaCampos();
			}
		});
		btExcluir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (comboBox2.getSelectedIndex() == 1) {
					produtoController.getProdutos().produto.getAve().setId(Integer
							.parseInt(tfId.getText()));
					produtoController.getProdutos().localizar("Ave");
					int n = JOptionPane.showConfirmDialog(null,
							produtoController.getProdutos().produto.getAve()
									.getDescricao(), " Excluir o Filme? ",
							JOptionPane.YES_NO_OPTION);
					if (n == JOptionPane.YES_OPTION) {
						JOptionPane.showMessageDialog(null, produtoController
								.getProdutos().atualizar(ProdutoDAO.EXCLUSAO, "Ave"));
						limpaCampos();
					}
				} else {
					produtoController.getProdutos().produto.getBovino().setId(Integer
							.parseInt(tfId.getText()));
					produtoController.getProdutos().localizar("Bovino");
					int n = JOptionPane.showConfirmDialog(null,
							produtoController.getProdutos().produto.getBovino()
									.getDescricao(), " Excluir o Filme? ",
							JOptionPane.YES_NO_OPTION);
					if (n == JOptionPane.YES_OPTION) {
						JOptionPane.showMessageDialog(null, produtoController
								.getProdutos().atualizar(ProdutoDAO.EXCLUSAO, "Bovino"));
						limpaCampos();
					}
				}
			}
		});
		btLocalizar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				atualizaCampos();
			}
		});
	}

	protected int getNovoID() {
		// TODO Implementar busca do ultimo id e somar mais um
		return 0;
	}

	/* Limpa os campos */
	public void limpaCampos() {
		tfId.enable(false);
		tfId.setText("");
		tfDescricao.setText("");
		setBotoes(true, true, false, false, false, false);
	}

	/* Metodo que atualiza os cmapos do usuario conforme consulta do metodo de localizar */
	public void atualizaCampos() {
		if (comboBox2.getSelectedIndex() == 1) {
			produtoController.getProdutos().produto.getAve().setId(Integer.parseInt(tfId
					.getText()));
			if (produtoController.getProdutos().localizar("Ave")) {
				tfId.setText(Integer.toString(produtoController.getProdutos().produto.getAve()
						.getId()));
				tfDescricao.setText(produtoController.getProdutos().produto.getAve()
						.getDescricao());
				// tfFornecedor.setText(produtoController.getProdutos().produto.getFornecedor());
				setBotoes(true, true, false, true, true, true);
			} else {
				JOptionPane.showMessageDialog(null, "Produto Ave nao encontrado!");
				limpaCampos();
			}
		} else {
			produtoController.getProdutos().produto.getBovino().setId(Integer.parseInt(tfId
					.getText()));
			if (produtoController.getProdutos().localizar("Bovino")) {
				tfId.setText(Integer.toString(produtoController.getProdutos().produto.getBovino()
						.getId()));
				tfDescricao.setText(produtoController.getProdutos().produto.getBovino()
						.getDescricao());
				// tfFornecedor.setText(produtoController.getProdutos().produto.getFornecedor());
				// ver depois
				setBotoes(true, true, false, true, true, true);
			} else {
				JOptionPane.showMessageDialog(null, "Produto Bovino nao encontrado!");
				limpaCampos();
			}			
		}
	}

	/* Seta os estados dos botoes */
	public void setBotoes(boolean bNovo, boolean bLocalizar, boolean bGravar,
			boolean bAlterar, boolean bExcluir, boolean bCancelar) {
		btNovo.setEnabled(bNovo);
		btLocalizar.setEnabled(bLocalizar);
		btGravar.setEnabled(bGravar);
		btAlterar.setEnabled(bAlterar);
		btExcluir.setEnabled(bExcluir);
		btCancelar.setEnabled(bCancelar);
	}
}
